package org.zjx.pojo;

import lombok.Data;
import lombok.NoArgsConstructor;
import org.zjx.entity.Address;
import org.zjx.entity.Sects;

import java.awt.*;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 完整玩家路由数据封装类
 * 包含玩家寻路所需的所有动态数据：
 * - 基础位置信息（起点、终点）
 * - 道具信息（飞行符、合成旗、法宝等）
 * - 自定义路由连接
 */
@Data
@NoArgsConstructor
public class RouteQueryPojo implements Serializable {
    private static final long serialVersionUID = 1L;
    private long version = 0;
    private String playerId;       // 玩家唯一标识
    private Address start;              // 路径起点
    private Address end;                // 路径终点
    private Sects sects;                //门派
    private boolean hasFlyingCharm;    // 是否有飞行符
    private boolean inTeam;             //是否组队
    private Map<String, List<Point>> flyingFlagsPoints;
    private Map<String, List<Point>> magicPoints;
    private Map<String, List<Point>> customRoutes; // 自定义路由

    /**
     * 构造函数
     *
     * @param playerId 玩家ID（必填）
     * @param start    起始位置（必填）
     * @param end      目标位置（必填）
     */
    public RouteQueryPojo(String playerId, Address start, Address end, Sects sects) {
        if (playerId == null || start == null || end == null || sects == null) {
            throw new IllegalArgumentException("参数不能为null");
        }
        this.playerId = playerId;
        this.start = start;
        this.end = end;
        this.sects = sects;
        this.flyingFlagsPoints = new HashMap<>();
        this.magicPoints = new HashMap<>();
        this.customRoutes = new HashMap<>();
    }

}
